From da29a765e48f068a2e13318a77b46d7132db8642 Mon Sep 17 00:00:00 2001 From: "Mr. E23" Date: Wed, 11 Feb 2004 12:03:01 +0000 Subject: [PATCH] Fixed bug causing warnings. Fixed problem with repeated heavy SQL queries on non-memcached setups. --- includes/SearchEngine.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php index 90e0f5b4a1..e7f397f706 100644 --- a/includes/SearchEngine.php +++ b/includes/SearchEngine.php @@ -9,6 +9,7 @@ class SearchEngine { var $addtoquery = array(); var $namespacesToSearch = array(); var $alternateTitle; + var $all_titles = false; function SearchEngine( $text ) { @@ -529,6 +530,15 @@ class SearchEngine { /* static */ function getTitlesByLength($aLength, $aNamespace = 0){ global $wgMemc, $wgDBname; + // to avoid multiple costly SELECTs in case of no memcached + if( $this->all_titles ){ + if( isset( $this->all_titles[$aLength][$aNamespace] ) ){ + return $this->all_titles[$aLength][$aNamespace]; + } else { + return array(); + } + } + $mkey = "$wgDBname:titlesbylength:$aLength:$aNamespace"; $mkeyts = "$wgDBname:titlesbylength:createtime"; $ts = $wgMemc->get( $mkeyts ); @@ -541,6 +551,7 @@ class SearchEngine { } $wgMemc->set( $mkeyts, time() ); + $res = wfQuery("SELECT cur_title, cur_namespace FROM cur", DB_READ); $titles = array(); // length, ns, [titles] while( $obj = wfFetchObject( $res ) ){ @@ -555,12 +566,14 @@ class SearchEngine { $wgMemc->set( $mkey, $title_arr, 3600 * 24 ); } } - return $titles[$aLength][$aNamespace]; + $this->all_titles = $titles; + if( isset( $titles[$aLength][$aNamespace] ) ) + return $titles[$aLength][$aNamespace]; + else + return array(); } } /* private static */ function SearchEngine_pcmp($a, $b){ return $a[0] - $b[0]; } - - ?> -- 2.20.1